package cc.bookcloud.tool.ocr.util.ocr;

import cc.bookcloud.tool.ocr.util.StringUtil;

/**
 * @Desc: @todo
 * @Version: 2.0
 * @Author: John Goo
 * @Date: 2024/11/29 10:23
 **/
public class OcrTextParseUtil {


    // 红色的编号至少有一个大写字母，最多2个
    public static boolean isNumberWithNotMore2Letter(String str) {
        if (StringUtil.isEmpty(str)) {
            return false;
        }
        char[] array = str.toCharArray();
        int upperLetterCnt = 0;
        int numCnt = 0;
        for (int i = 0; i < array.length; i++) {
            char c = array[i];
            if (c >= 'A' && c <= 'Z') {
                upperLetterCnt++;
            } else if (c >= '0' && c <= '9') {
                numCnt++;
            }
        }
        return upperLetterCnt > 0 && upperLetterCnt <= 2 && (upperLetterCnt + numCnt == array.length);

    }

    /**
     * @param pos,text
     * @return boolean
     * @Desc：是否是火车票编号
     * @Author：John Goo
     * @Date：2024/11/29 14:36
     */
    public static boolean isTrainTicketNo(int pos, String text) {
        if (StringUtil.isEmpty(text)) {
            return false;
        }
        Boolean flag = false;
        // 解析ticketNo
        // 预定位置 0，1
        //if (pos <= 1) {
            // 火车票编号里面至多有2位大写的字母
            boolean isUpperLetter = OcrTextParseUtil.isNumberWithNotMore2Letter(text);
            // 长度 5-12位
            int len = text.length();
            if (len >= 5 && len <= 12 && isUpperLetter) {
                flag = true;
            }
       // }
        return flag;
    }


    public static boolean isTrainSeatNo(String text) {
        // 03车12号
        char[] array = text.toCharArray();

        int cPos = 0;
        int hPos = 0;

        for (int i = 0; i < array.length; i++) {
            char v = array[i];
            if(v >= '0' && v <= '9'){
                // do nothing
            }else if(v == '车'){
                cPos = i;
            }else if(v == '号'){
                hPos = i;
            }else {
                // 存在字符其它情况
                return false;
            }
        }
        return cPos!=0 && cPos+1<hPos && (array.length>=4 && array.length<=10);


    }


    /**
     * @Desc：中文特殊字符转换为英文
    * @Author：John Goo
    * @Date：2024/12/4 9:21
    * @param text
    * @return String
    */
    public static String chiSpecialStrTransferEn(String text){
        if(text == null){
            return null;
        }
        text = text.replace("：",":")
                   .replace("（","(")
                   .replace("）",")")
                   .replace("¥","￥") ;

        return text;


    }

    public static void main(String[] args) {
        System.out.println(chiSpecialStrTransferEn("发票号码：2231700000000000142"));
    }
}
